//controller用来处理数据，响应客户端

const {
    loginService,
    getListService,
    addUserService,
    delService
}=require('../service/user');

const {
    createCode,
    createToken,
    createId
}=require('../utils/index');

exports.sendCode=async ctx=>{//验证码
    let result=createCode();
    if(result){
       ctx.session.text=result.text;//服务端缓存
        ctx.body={
            code:1001,
            msg:'获取验证码成功',
            result
        }
    }else{
        ctx.body={
            code:1002,
            msg:'获取验证码失败',
        }
    }
};

exports.login=async ctx=>{//登录
    let {code}=ctx.request.body;
    //1.判断验证码输入是否正确
    if(code.toLowerCase()==ctx.session.text.toLowerCase()){//如果验证码输入正确
        //2.调用service，查询用户是否存在
        let result=await loginService(ctx.request.body);
        //  console.log(result[0].id);
            if(result.length){
                const token=createToken(result[0].user_id);
                // console.log(token);
                ctx.body={//响应客户端
                    code:1001,
                    msg:'登录成功',
                    user_id:result[0].id,
                    user_name:result[0].username,
                    token
                }
            }else{
                ctx.body={
                    code:1002,
                    msg:'登录失败'
                }
            }
    }else{//验证码输入错误
        ctx.body={
            code:1002,
            msg:'验证码输入有误，请重新输入'
        }
    }
    
}

exports.getList=async ctx=>{//获取用户列表
    const result=await getListService();
    if(result.length){
        ctx.body={
            code:1001,
            msg:'获取用户成功',
            result
        }
    }else{
        ctx.body={
            code:1002,
            msg:'暂无数据'
        }
    }
};

exports.addUser=async ctx=>{//添加用户
    const id=createId(ctx.request.body.username);
    const result= await addUserService({
        id,
        ...ctx.request.body
    });
    if(result.affectedRows){
        ctx.body={
            code:1001,
            msg:'添加用户成功'
        }
    }else{
        ctx.body={
            code:1002,
            msg:'添加用户失败'
        }
    }
};

exports.del=async ctx=>{//删除
    const result=await delService(ctx.params);
    console.log(result);
}